#ifndef __SELF_FLASH_DRV_H__
#define __SELF_FLASH_DRV_H__
#include "gd32f30x.h"
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>



#define FLASH_PAGE_SIZE  		   		 	0x800       // 2K
#define FLASH_START_ADDRESS					0x08070000  // 2K
#define FLASH_END_ADDRESS					  0x0807FFFF  // 512K


/**
 * @desc  : 读取内部flash数据
 * @date  : 2025-04-26
 * @author: AnRui
 * @param : readAddr - {参数说明}:  读取地址
 * @param : pBuffer - {参数说明}:   数组首地址
 * @param : numToRead - {参数说明}: 要读出数据的个数
 * @return:
 * @note  :
 */
bool FlashRead(uint32_t readAddr, uint8_t* pBuffer, uint32_t numToRead);


/**
 * @desc  : 指定地址开始写入指定个数的数据
 * @date  : 2025-04-26
 * @author: AnRui
 * @param : writeAddr - {参数说明}: 写入地址
 * @param : pBuffer - {参数说明}: 数组首地址
 * @param : numToWrite - {参数说明}: 要写入的数据个数
 * @note  : 注意:因为是2个字节写入 所以保证开始的写入地址 必须为2的倍数
 */
bool FlashWrite(uint32_t writeAddr, uint8_t* pBuffer, uint32_t numToWrite);

/**
 * @desc  : 内部flash读写测试
 * @date  : 2025-04-27
 * @author: AnRui
 * @note  :
 */
void FlashDrvTest(void);



#endif // __SELF_FLASH_DRV_H__
